package createpattern.factory.factorymethod;
/**
 * 工厂方法模式
 * 优点：
 * 用户只需要知道具体工厂的名称就可得到所要的产品，无须知道产品的具体创建过程；
 * 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类，无须对原工厂进行任何修改，满足开闭原则；
 * 缺点：
 * 每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类，这增加了系统的复杂度。
 * */
public class Test {
    public static void main(String[] args) {
        // 创建具体工厂，由抽象工厂接收
        CoffeeFactory coffeeFactory = new AmericanCoffeeFactory();
        // 咖啡店通过抽象工厂生产产品
        CoffeeStore coffeeStore = new CoffeeStore(coffeeFactory);
        coffeeStore.orderCoffee();
    }
}
